ACH Returns
This API allows clients to initiate an ACH Credit Return operation for a previously credited transaction. It also returns the status of the return request, along with updated account details and a unique process ID for tracking.
Method: POST
{{URL}}/rpc/paymentv2
Example
Request Parameters
Parameter | Description |
---|---|
method | String RPC method name (e.g., ledger.ach.return) |
id | String Unique ID for the request |
payload | Object |
reference | String Unique reference ID of the return request |
transactionType | String Must be "ACH_IN_CREDIT_RETURN" |
transactionDateTime | String Date and time of return request (format: YYYY-MM-DD HH:MM:SS) |
channel | String Must be "ACH" |
originalTransactionNumber | String Transaction number of the original incoming ACH credit |
returnCode | String Return Code (e.g., R01) |
reason | String Reason for the return |
api | Object |
credential | String Basic (space) [( "<Username>:<apiKey>" ) as Base64 encoded value] to be provided Sample Value: "Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx" |
signature | String Sign the request payload (params.payload) using private key. Sample Value: "MEQCIAbpxHpdOyBEVlmxPYv7m4Z1OvWJJYw7g7u3GE3T9nmvAiBjKHckSvb1M6O4t7FeWsn2z9Y3dMeYn3HyX/k28ek/Dw==" |
apiKey | String API key is provided at the time of device registration. Sample Value : "f59b0cce958e45a780eaeb3aec9ecd01" |
Body
'{
"method": "ledger.ach.return",
"id": "1",
"params": {
"payload": {
"reference": "PL-TS-INR-000036",
"transactionType": "ACH_IN_CREDIT_RETURN",
"transactionDateTime": "2025-03-17 14:01:00",
"channel": "ACH",
"originalTransactionNumber": "QA00000001335030",
"returnCode": "R01",
"reason": "Insufficient Funds"
},
"api": {
"credential": "{{Cred}}",
"signature": "{{signature}}",
"apiKey": "{{API}}"
}
}
}'
Response: 200
Response Parameters
Parameter | Description |
---|---|
api | Object |
type | String Acknowledgement type (e.g., ACH_IN_CREDIT_RETURN_ACK) |
reference | String Reference number generated for the return transaction |
dateTime | String Timestamp of the response |
account | Object |
accountId | String Account identifier associated with the transaction |
balanceCents | Integer Account balance in cents |
holdBalanceCents | Integer Amount on hold in cents |
status | String Status of the account (e.g., ACTIVE) |
transactionNumber | String Unique number assigned to the return transaction |
transactionStatus | String Current status (e.g., PENDING, COMPLETED, FAILED) |
transactionAmountCents | Integer Amount returned in cents |
originalRequestBase64 | String Base64-encoded version of the original return request |
processId | String Internal process ID for traceability |
header | Object |
reference | String Transaction reference |
apiKey | String Echoed API Key |
signature | String Echoed Signature |
{
"id": "1",
"result": {
"api": {
"type": "ACH_IN_CREDIT_RETURN_ACK",
"reference": "PL-TS-INR-000036",
"dateTime": "2025-03-17 14:02:23"
},
"account": {
"accountId": "200133255370754",
"balanceCents": 2006127468,
"holdBalanceCents": 45140,
"status": "ACTIVE"
},
"transactionNumber": "QA00000001335033",
"transactionStatus": "PENDING",
"transactionAmountCents": 5500,
"originalRequestBase64": "base64-encoded-original-payload",
"processId": "PL25031701310017"
},
"header": {
"reference": "PL-TS-INR-000036",
"apiKey": "f54873cb58a6445c9e6825e75450f879",
"signature": "MEYCIQDybl...dk3Ia"
}
}
ACH Return Codes
ACH Return Codes
Code | Description |
---|---|
R01 | Insufficient Funds |
R02 | Account Closed |
R03 | No Account / Unable to Locate Account |
R04 | Invalid Account Number Structure |
R05 | Unauthorized Debit to Consumer Account Using Corporate SEC Code |
R06 | Returned per ODFI's Request |
R07 | Authorization Revoked by Customer |
R08 | Payment Stopped |
R09 | Uncollected Funds |
R10 | Customer Advises Not Authorized |
R11 | Customer Advises Entry Not in Accordance with the Terms of the Authorization |
R12 | Account Sold to Another DFI |
R13 | Invalid ACH Routing Number |
R14 | Representative Payee Deceased |
R15 | Beneficiary or Account Holder Deceased |
R16 | Account Frozen |
R17 | File Record Edit Criteria / Entry with Invalid Account Number Initiated Under Questionable Circumstances |
R18 | Improper Effective Entry Date |
R19 | Amount Field Error |
R20 | Non-Transaction Account |
R21 | Invalid Company Identification |
R22 | Invalid Individual ID Number |
R23 | Credit Entry Refused by Receiver |
R24 | Duplicate Entry |
R25 | Addenda Error |
R26 | Mandatory Field Error |
R27 | Trace Number Error |
R28 | Routing Number Check Digit Error |
R29 | Corporate Customer Advises Not Authorized |
R30 | RDFI Not Participant in Check Truncation Program |
R31 | Permissible Return Entry (CCD and CTX only) |
R32 | RDFI Non-Settlement |
R33 | Return of XCK Entry |
R34 | Limited Participation DFI |
R35 | Return of Improper Debit Entry |
R36 | Return of Improper Credit Entry |
R37 | Source Document Presented for Payment |
R38 | Stop Payment on Source Document |
R39 | Improper Source Document / Amount Not Accurately Obtained from Source Document |
R40 | Return of ENR Entry by Federal Government Agency |
R41 | Invalid Transaction Code |
R42 | Routing Number / Check Digit Error |
R43 | Invalid DFI Account Number |
R44 | Invalid Individual ID Number |
R45 | Invalid Individual / Company Name |
R46 | Invalid Representative Payee Indicator Code |
R47 | Duplicate Enrollment |
R50 | State Law Affecting RCK Acceptance |
R51 | Item Related to RCK Entry is Ineligible or Improper |
R52 | Stop Payment on Item Related to RCK Entry |
R53 | Item and RCK Entry Presented for Payment |
R61 | Misrouted Return |
R62 | Return of Erroneous or Reversing Debit |
R67 | Duplicate Return |
R68 | Untimely Return |
R69 | Field Error |
R70 | Permissible Return Not Accepted / Not Requested by ODFI |
R71 | Misrouted Dishonored Return |
R72 | Untimely Dishonored Return |
Error Codes
Error Codes
Error Code | Error Message |
---|---|
A107 | DUPLICATE_REFERENCE |
A112 | INVALID_AMOUNT |
A113 | INVALID_CHANNEL |
A114 | CUSTOMER_NOT_FOUND |
A116 | INVALID_API_KEY |
A118 | TRANSACTION_REFERENCE_EMPTY |
A122 | PROGRAM NOT FOUND |
A123 | CREDITOR_ACCOUNT_TYPE_EMPTY |
A126 | TRANSACTION_TYPE_EMPTY |
A147 | TRANSACTION NOT FOUND |
A157 | INVALID ACCOUNT NUMBER |
A161 | DEBTOR ACCOUNT NOT FOUND |
A166 | DEBTOR_ACCOUNT_TYPE_EMPTY |
A167 | DEBTOR_ACCOUNT_ID_EMPTY |
A169 | ACCOUNT NUMBER DOES NOT MATCH WITH API KEY |
A172 | IDENTIFICATIONTYPE2 SHOULD BE EITHER SAVINGS OR CHECKING |
A183 | PAYLOAD EMPTY |
A184 | INVALID ORIGINAL TRANSACTION STATUS |
A185 | TRANSACTION ALREADY REVERSED |
A186 | CREDITOR FIRSTNAME REQUIRED |
A187 | CREDITOR POSTAL ADDRESS ADDRESSLINE1 REQUIRED |
A188 | CREDITOR POSTAL ADDRESS ZIPCODE REQUIRED |
A189 | CREDITOR POSTAL ADDRESS COUNTRYCODE REQUIRED |
A190 | CREDITOR CONTACT EITHER PRIMARYEMAIL OR PRIMARYPHONE REQUIRED |
A191 | DEBTOR FIRSTNAME REQUIRED |
A192 | DEBTOR POSTAL ADDRESS ADDRESSLINE1 REQUIRED |
A193 | DEBTOR POSTAL ADDRESS ZIPCODE REQUIRED |
A194 | DEBTOR POSTAL ADDRESS COUNTRYCODE REQUIRED |
A195 | DEBTOR CONTACT EITHER PRIMARYEMAIL OR PRIMARYPHONE REQUIRED |
A196 | DEBTOR USERTYPE REQUIRED |
A197 | DEBTOR IDENTIFICATION REQUIRED |
A198 | DEBTOR IDENTIFICATIONTYPE REQUIRED |
A199 | CREDITOR USERTYPE REQUIRED |
A200 | CREDITOR IDENTIFICATION REQUIRED |
A201 | CREDITOR IDENTIFICATIONTYPE REQUIRED |
A205 | INVALID_PROGRAM |
A206 | INVALID_PRODUCT |
A207 | PRODUCT_PROGRAM_CHANNEL SETTING NOT FOUND |
A208 | ID EMPTY |
A209 | APIKEY NOT FOUND |
1111 | CREDITOR ACCOUNT NOT FOUND |
1113 | CREDITOR NOT FOUND |
1116 | TRANSACTION AMOUNT NOT FOUND |
1117 | TRANSACTION CURRENCY NOT FOUND |
1122 | CREDITOR ACCOUNT IDENTIFICATION TYPE NOT FOUND |
1123 | CREDITOR ACCOUNT IDENTIFICATION TYPE2 NOT FOUND |
1126 | DEBTOR ACCOUNT IDENTIFICATION TYPE NOT FOUND |
1127 | PRODUCT NOT FOUND |
1128 | PROGRAM NOT FOUND |
1129 | CHANNEL NOT FOUND |
1130 | TRANSACTION TYPE NOT FOUND |
1131 | INVALID API KEY |
2053 | INVALID_ACCOUNT_NUMBER |
5019 | INSUFFICIENT BALANCE |
9999 | INTERNAL ERROR |
1001 | CARD HOLDER ALREADY EXISTS |
1002 | INVALID CARDHOLDER FIRST NAME |
1003 | INVALID CARDHOLDER PHONE NUMBER |
1004 | INVALID CARDHOLDER ADDRESS LINE 1 |
1005 | INVALID CARDHOLDER CITY |
1006 | INVALID CARDHOLDER STATE |
UNAUTHORIZED | Access Denied |
INVALID_SIGNATURE | Invalid Signature |
NOT_FOUND_USER_DEVICE | User device not found |
BAD_CREDENTIAL | Invalid Credential |